﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#define ll __int64

ll pew(int m, int n)
{
    ll y = 1;
    while (n--)
    {
        y *= m;
    }
    return y;
}

int main()
{

    char arr[36];
    int n;
    while (scanf("%s%d", arr, &n) != EOF)
    {
        int i, j;
        int len = strlen(arr);
        int tmp = 0;
        ll y = 0;
        int pd = 0;
        for (i = 2; i <= 16; i++)
        {
            y = 0;
            for (j = len - 1; j >= 0; j--)
            {
                if (arr[j] <= '9' && arr[j] >= '0')
                    tmp = arr[j] - '0';
                else if (arr[j] <= 'Z' && arr[j] >= 'A')
                    tmp = arr[j] - 'A' + 10;
                if (tmp >= i || y > n)
                    break;
                else
                {
                    y += tmp * pew(i, len - j - 1);
                }

            }
            if (y == n)
            {
                pd = 1;
                printf("%d\n", i);
                break;
            }
        }
        if (pd == 0)
        {
            printf("Impossible\n");
        }
        memset(arr, 0, sizeof(arr));
    }

}
/*题目描述
小明获得了一些密码的片段，包含0∼9, A∼F 这些字符，他猜这些是某个进制下的一个整数的数码串。 小明想知道从2到16进制中，哪些进制下，这个数码串的对应的十进制整数值，等于n ?

输入
存在不超过1000个样例，每行一个样例。 每行包括两部分，数码串(串长不超过31)，整数n(1≤n≤109)

输出
每行输出一个样例的结果。 如果存在多个解，输出最小的那个进制。 如果没有满足的进制，输出"Impossible"。

样例输入
F 15
F 14
23 11
25 13
样例输出
16
Impossible
4
Impossible
*/